#ifndef CAMERA_H
#define CAMERA_H
#include "ReconstructByKinectCommonGlobal.h"
#include "../glm/glm.hpp"


class _LIB_CLASS Camera 
{
public:

	enum RotatePlane { H, V };

	Camera ();

	virtual ~Camera ();

	void setSight ();

	glm::mat4 getMatrix () const;

	void rotateCamera (float angle, RotatePlane rotatePlane);

	void setCameraAngle (float hAngle, float vAngle);

	void setViewpoint (const glm::vec3 & loc);

	void moveViewPointReletedToCamera (const glm::vec3 & vec);

	glm::vec3 getViewpoint () const;

// 	glm::vec3 getCameraLocation ();

	float getHAngle () const;

	float getVAngle () const;

	void setDistance (float distance);

	float getDistance () const;

	void moveFar (float deltaDistance);

	void moveNear (float deltaDistance);

	void resetCamera ();

private:

	glm::vec3 _viewpoint;

	float _distance;

	float _hAngle;

	float _vAngle;

};

#endif // CAMERA_H